#!/bin/bash
#功能：开启selinux，
#注：凝思无selinux，由安全模块控制默认情况下是开机自动加载
#查看是否启动，grep到值则表示已开启：lsmod | grep linx_sec
#重新加载安全模块：modprobe linx_sec
#卸载安全模块：modprobe -r linx_sec
#SELINUX模式
#SELINUX=enforcing：强制模式，表示所有违反安全策略的行为都将被禁止。
#SELINUX=permissive：宽容模式，表示所有违反安全策略的行为不被禁止，但是会在日志中作记录。



MODE=permissive
SRC_FILE=/etc/selinux/config
###############################################################################################
#SH
SHPATH=`readlink -f $0`
SHDIR=`dirname $SHPATH`
SHNAME=`echo $SHPATH|awk -F '/' '{print $NF}'|awk -F '.' '{print $1}'`

#DIR
LOG_DIR=$SHDIR/logs/$SHNAME
TMP_DIR=$SHDIR/temp/$SHNAME
mkdir -p $LOG_DIR $TMP_DIR

#
if [ -f $SRC_FILE ];then 
	if [ ! -f $SRC_FILE.init.bak  ];then cp $SRC_FILE $SRC_FILE.init.bak;fi
	cat $SRC_FILE|wc -l|xargs seq >$TMP_DIR/src_ln.txt 
	VAR_NUM=`paste $SRC_FILE $TMP_DIR/src_ln.txt |grep -v ^#|grep -i "SELINUX="|awk '{print $NF}'`
	if [ -z "$VAR_NUM" ];then 
		 echo "SELINUX=$MODE" >> $SRC_FILE
		 if [ $? -eq 0 ];then echo "Success,FILE=$SRC_FILE 添加策略: SELINUX=$MODE 成功。";else echo "Error!FILE=$SRC_FILE  添加策略: SELINUX=$MODE 失败！请检测文件权限，或使用root用户重试！";fi
	else
		cat $SRC_FILE|grep -v ^#|grep -i "SELINUX="|grep -i "$MODE" >/dev/null
		if [ $? -eq 0 ];then
			echo "TIP,FILE=$SRC_FILE 已存在策略: $LINE_VAR1 $LINE_VAR2 跳过操作。"
		else
			for i in `echo $VAR_NUM`
			do
				sed -i "$i s/^/#/" $SRC_FILE
			done
			sed -i "${i}a SELINUX=$MODE" $SRC_FILE
			if [ $? -eq 0 ];then echo "Success,FILE=$SRC_FILE 添加策略: SELINUX=$MODE 成功。";else echo "Error!FILE=$SRC_FILE  添加策略: SELINUX=$MODE 失败！请检测文件权限，或使用root用户重试！";fi
		fi
	fi
else
	lsmod lgrep linx_sec >/dev/null
	if [ $? -eq 0 ];then 
		echo "TIP,凝思无selinux，由安全模块控制内核。当前开启状态。"
		lsmod | grep linx_sec
	else 
		modprobe linx_sec
		lsmod | grep linx_sec 
		if [ $? -eq 0 ];then echo "Success,凝思安全内核启动成功。";else echo "Error!凝思安全内核启动成功，使用root用户执行命令:modprobe linx_sec ;查看状态命令: lsmod | grep linx_sec";fi
	fi
fi


